package com.blrs.mapper;

import com.blrs.domain.ProjectInfo;
import com.blrs.domain.SubProjectInfo;
import com.blrs.domain.vo.BusinessMainClassVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 项目信息接口
 * 
 * @author ruoyi
 * @date 2023-11-30
 */
public interface ProjectInfoMapper 
{
    public int updateProjectInfoChange(ProjectInfo projectInfo,String changNote) throws NoSuchFieldException, IllegalAccessException;
    public int updateSubProjectInfoChange(SubProjectInfo subProjectInfo,String changNote) throws NoSuchFieldException, IllegalAccessException;
    //public Map<String,String> comparePurchasingSubProjectInfo(SubProjectInfo purchasing, SubProjectInfo purchasing1) throws NoSuchFieldException, IllegalAccessException;
    //public Map<String,String> comparePurchasingProjectInfo(ProjectInfo purchasing, ProjectInfo purchasing1) throws NoSuchFieldException, IllegalAccessException;
    public List<Map> getProjectTree(ProjectInfo projectInfo, SubProjectInfo subProjectInfo);
    public List<Map> getSubProjectTree(ProjectInfo projectInfo, SubProjectInfo subProjectInfo);
    public int editMainClass(BusinessMainClassVo businessMainClassVo);
    public List<ProjectInfo> selectProjectInfoListAll(ProjectInfo projectInfo);
    public int editState(ProjectInfo projectInfo);
    /**
     * 判断数据是否存在
     * @param id
     * @return
     */
    public Long count(@Param("id") String id);
    /**
     * 查询projectInfo
     * 
     * @param projectId projectInfo主键
     * @return projectInfo
     */
    public ProjectInfo selectProjectInfoByProjectId(String projectId);

    /**
     * 查询projectInfo列表
     * 
     * @param projectInfo projectInfo
     * @return projectInfo集合
     */
    public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo);
    public List<ProjectInfo> selectProjectInfoOtherList(ProjectInfo projectInfo);
    public List<ProjectInfo> selectProjectInfoListOver(ProjectInfo projectInfo);

    public List<ProjectInfo> selectSubProjectInfoAllList(ProjectInfo projectInfo);

    /**
     * 新增projectInfo
     * 
     * @param projectInfo projectInfo
     * @return 结果
     */
    public int insertProjectInfo(ProjectInfo projectInfo);
    public int addProjectInfo(ProjectInfo projectInfo);

    /**
     * 修改projectInfo
     * 
     * @param projectInfo projectInfo
     * @return 结果
     */
    public int updateProjectInfo(ProjectInfo projectInfo);

    /**
     * 删除projectInfo
     * 
     * @param projectId projectInfo主键
     * @return 结果
     */
    public int deleteProjectInfoByProjectId(String projectId);

    /**
     * 批量删除projectInfo
     * 
     * @param projectIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProjectInfoByProjectIds(String[] projectIds);
    public int selectProjectInfoNumber(String belongTo);
    public int selectProjectInfoIngNumber(String belongTo);



    ProjectInfo selectProjectInfoByProjectIdAndContract(String projectId);

    List<ProjectInfo> selectProjectInfoWorkList(ProjectInfo projectInfo);

    ProjectInfo selecProjectInfoByProjectInfoId(String projectId);
}
